#include <iostream>
#include <signal.h>
#include <unistd.h>
#include <sys/types.h>
#include <stdlib.h>
#include <cstdio>

using namespace std;

void handler(int signo)
{
    cout << "get a signo:" << signo << endl;
    //exit(-1);
}


// 硬件异常发送信号
//  int main()
//  {
//      signal(11,handler);

//     while(true)
//     {
//         int* p;
//         *p = 10;
//     }
//     return 0;
// }

// 系统调用向目标进程发送信号
// kill()可以向任何进程发送信号
// raise()自己给自己发送任何信号 = kill(getpid(),signo)
// abort()给自己发送指定信号   = kill(getpid(),SIGABRT)
//  int main()
//  {
//      int cnt = 10;
//      while(cnt--)
//      {
//          printf("cnt:%d , pid:%d\n",cnt,getpid());
//          sleep(1);
//          //if(cnt<=5) raise(9);
//          if(cnt<=5) abort();
//      }
//      return 0;
//  }

// 捕捉一个信号
//  void handler(int signo)
//  {
//      cout<<"捕捉到一个信号"<<endl;
//  }

// int main()
// {
//     signal(2,handler);
//     while(true)
//     {
//         cout<<"l am a process! my id is " << getpid() << endl;
//         sleep(1);
//     }
//     return 0;
// }